#/bin/bash

n=1
b=1024
flag_encode="OK"
flag_decode="OK"

if [ "$1" == "-h" ]
then
  echo "DESCRIPCIÓN
       Script de test para el TP1

       -n     Cantidad de veces que se desea correr el test. Default = 1.

       -b     Tamaño en byte de los archivos aleatorios generados. Default = 1024.

       -h     Imprime esta ayuda"
	exit 1
fi

if [ "$1" == "-b" ]
then
  b=$2
fi

if [ "$1" == "-n" ]
then
  n=$2
fi

if [ "$3" == "-b" ]
then
  b=$4
fi

if [ "$3" == "-n" ]
then
  n=$4
fi

echo -e "Archivos aleatorios de $b bytes, repitiendo $n veces.\n"

cont=0
while [ $cont -lt $n ]; do

	#Genero un archivo aleatorio
	head -c $b /dev/urandom > /tmp/random.txt

	#Genero Encode del archivo aleatorio con el TP1 y con el TP0 como referencia
	./tp0 -r > /tmp/tp0_out.txt < /tmp/random.txt
	./tp1-encode > /tmp/tp1_out.txt < /tmp/random.txt

	#Comparo si las salidas son iguales, si no lo son pongo en FAILED el flag
	lineas=`diff -w -B -a /tmp/tp0_out.txt /tmp/tp1_out.txt | wc -l`
	if [ $lineas -ne "0" ]
	then
		flag_encode="FAILED"
	fi

	#Ahora convierto el texto codificado y comparo con el archivo Random.txt original y con la reversa del tp0
	./tp0 -b > /tmp/tp0_out_rev.txt < /tmp/tp0_out.txt
	./tp1-decode > /tmp/tp1_out_rev.txt < /tmp/tp1_out.txt

	#Comparo si las salidas son iguales, si no lo son pongo en FAILED el flag
	lineas=`diff -w -B -a /tmp/tp1_out_rev.txt /tmp/random.txt | wc -l`
	if [ $lineas -ne "0" ]
	then
		flag_decode="FAILED"
	fi

	lineas=`diff -w -B -a /tmp/tp1_out_rev.txt /tmp/tp0_out_rev.txt | wc -l`
	if [ $lineas -ne "0" ]
	then
		flag_decode="FAILED"
	fi
	
	let cont=cont+1
done


echo "Texto a Binario: $flag_encode"
echo "Binario a Texto: $flag_decode"
